package com.zhb.zhbaiagent.tools;

import cn.hutool.core.io.FileUtil;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.zhb.zhbaiagent.constant.FileConstant;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;

import java.io.IOException;

public class PDFGenerationTool {

    /**
     * 工具方法用于生成包含指定内容的 PDF 文件
     * 
     * @param fileName 生成的 PDF 文件的名称
     * @param content  要包含在 PDF 中的内容
     * @return 生成的文件路径或错误信息
     */
    @Tool(description = "Generate a PDF file with given content")
    public String generatePDF(
            @ToolParam(description = "Name of the file to save the generated PDF") String fileName,
            @ToolParam(description = "Content to be included in the PDF") String content) {
        // 构建文件目录和完整文件路径
        String fileDir = FileConstant.FILE_SAVE_DIR + "/pdf";
        String filePath = fileDir + "/" + fileName;

        try {
            // 创建目标目录（如果不存在）
            FileUtil.mkdir(fileDir);

            // 初始化 PDF 文档生成工具
            try (PdfWriter writer = new PdfWriter(filePath);
                 PdfDocument pdf = new PdfDocument(writer);
                 Document document = new Document(pdf)) {

                // 使用 iText 内置的中文字体支持
                // STSongStd-Light: 字体名称, UniGB-UCS2-H: 编码格式
                PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H");
                document.setFont(font);

                // 创建段落并添加到文档
                Paragraph paragraph = new Paragraph(content);
                document.add(paragraph);
            }

            // 返回成功消息和文件路径
            return "PDF generated successfully to: " + filePath;

        } catch (IOException e) {
            // 捕获并返回异常信息
            return "Error generating PDF: " + e.getMessage();
        }
    }
}
